如果采用mysqli驱动,入库语句出错,不会生成Exception异常,所以php无法捕获。
如果采用PDO驱动,通过调整mysql的静默模式,可以产生Exception异常,使php捕获。
事务是必须满足4个条件(ACID):原子性(Autmic)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
原子性(Autmic):事务在执行性,要做到“要么不做,要么全做!”,就是说不允许事务部分得执行。即使因为故障而使事务不能完成,在rollback时也要消除对数据库得影响!
一致性(Consistency):事务得操作应该使使数据库从一个一致状态转变倒另一个一致得状态!就拿网上购物来说吧,你只有即让商品出库,又让商品进入顾客得购物篮才能构成事务!
隔离性(Isolation):如果多个事务并发执行,应象各个事务独立执行一样!
持久性(Durability):一个成功执行得事务对数据库得作用是持久得,即使数据库应故障出错,也应该能够恢复!
MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
rollback和commit不能并列使用,当你同时使用,只有前面的一个有效,而后面的无效,即是你或执行commit或执行rollback
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
来源:https://www.cnblogs.com/xiezhi/p/5545979.html
「三年博客,如果觉得我的文章对您有用,请帮助本站成长」
共有 0 - Mysql事务与php异常捕获